1 Introduction

Some text for introduction to this survey and results.

2 Results

2.1 Data Preparation

Student survey has been conducted for 2 weeks and received 51 total reponses.

Load all required libraries that will be used throughout this analysis.

library(plyr)
library(psych)
library(plotly)

Start reading both CSV files, from student survey and speedtest result.

csv_surv <- read.csv('Student_Survey.csv')
csv_test <- read.csv('Speedtest_Result.csv')

Rename variables name to something more meaningful, shorter and easier to code.

tmpstud <- plyr::rename(csv_surv, c(Academic.Programme = "Programme", Internet.Connection.Method = "SSID", Main.Usage.of.Internet = "Usage", On.overall.basis..how.satisfied.are.you.with.wireless.internet.connection.provided.by.IIUM. = "Satisfaction", Propose.a.solution.to.improve.IIUM.WIFI.services. = "Comment", Average.Duration.of.Daily.Use.of.Internet = "Duration", How.many.times.have.your.Internet.connection.been.suddenly.disconnected.or.face.intermittent.connection.in.past.3.days. = "Disconnected", Is.WiFi.coverage.adequate.and.within.acceptable.signal.strength. = "Coverage", How.satisfied.are.you.with.the.network.speed.to.achieve.your.main.usages. = "Speed"))

tmptest <- plyr::rename(csv_test, c(Submission.Date = "Timestamp", WiFi.SSID = "SSID", Download.Speed..Mbps. = "DLSpeed", Download.Size..MB. = "DLSize", Upload.Speed..Mbps. = "UPSpeed", Upload.Size..MB. = "UPSize", Ping..ms. = "Ping", Jitter..ms. = "Jitter", Loss.... = "Loss", Signal.Strength..dBm. = "Signal"))

Perform data cleansing

tmpstud <- tmpstud[which(tmpstud$Gender == ''), ]
tmpstud$Timestamp <- tmpstud$Gender <- tmpstud$Comment <- NULL
tmpstud$Usage[7] <- "Study and assignment, Topic and subject research, Casual browsing"
tmpstud$Usage <- strsplit(as.character(tmpstud$Usage), ",")

Split Usage into list and transpose into dataframe

k <- 1

Respondent <- integer()
Programme <- character()
SSID <- character()
Mahallah <- character()
Usage <- character()
Satisfaction <- integer()
Duration <- character()
Speed <- integer()
Disconnected <- character()
Coverage <- character()

for(i in 1:nrow(tmpstud))
{
  for(j in 1:3)
  {
    Respondent[k] <- i # to identify unique number of respondent
    Programme[k] <- as.character(tmpstud$Programme[i])
    SSID[k] <- as.character(tmpstud$SSID[i])
    Mahallah[k] <- as.character(tmpstud$Mahallah[i])
    Usage[k] <- trimws(tmpstud$Usage[[i]][j]) # trim leading and trailing whitespace
    Satisfaction[k] <- tmpstud$Satisfaction[i]
    Duration[k] <- as.character(tmpstud$Duration[i])
    Speed[k] <- tmpstud$Speed[i]
    Disconnected[k] <- as.character(tmpstud$Disconnected[i])
    Coverage[k] <- as.character(tmpstud$Coverage[i])
    
    k <- k + 1
  }
}

Finalized dataframe from previous step

dfstud <- data.frame(Respondent, Programme, SSID, Mahallah, Usage, Satisfaction, Duration, Speed, Disconnected, Coverage, stringsAsFactors = FALSE)

2.2 Overall Level of Satisfaction

Bar graph for overall satisfaction

dfsatisfaction <- count(unique(dfstud[, c(1,6)])[, 2])
dfsatisfaction$x[dfsatisfaction$x == 1] <- "Very Dissatisfied"
dfsatisfaction$x[dfsatisfaction$x == 2] <- "Dissatisfied"
dfsatisfaction$x[dfsatisfaction$x == 3] <- "Satisfied"
dfsatisfaction$x[dfsatisfaction$x == 4] <- "Very Satisfied"

plot_ly(x = dfsatisfaction$x, y = dfsatisfaction$freq, type = "bar") %>%
layout(title = 'Overall Level of Satisfaction', yaxis = list(title = "Respondent"), xaxis = list(title = "Satisfaction Level"))